Method and apparatus for providing a low latency transmission system using adjustable buffers

ABSTRACT

One aspect of the present invention discloses a network system capable of transmitting and processing audio video (“A/V”) data with enhanced quality of service (“QoS”). The network system includes a transmitter, a transmission channel, an adjustable decoder buffer, and a decoder. The transmitter contains an encoder able to encode A/V data in accordance with encoding bit rate recommendation from SQoS and packets loss notifications. The transmission channel, in one example, transmits A/V data from the transmitter or the receiver. The adjustable decoder buffer, in one aspect, is able to change its storage capacity or buffering size in response to the adaptive latency estimate. Upon fetching at least a portion of the A/V data from the adjustable decoder buffer, SQoS updates the adaptive latency estimate based on the quality of the decoded A/V data.

PRIORITY

This patent application is a continuation patent application of aco-pending U.S. patent application having a U.S. patent application Ser.No. 14/838,088, filed on Aug. 27, 2015 in the name of the same inventorand entitled “Method and Apparatus for Providing A Low LatencyTransmission System Using Adjustable Buffers,” which is herebyincorporated herein by reference in its entirety.

RELATED APPLICATION

This application is related to the following co-pending applicationassigned to the Assignee of the present invention.

a. application Ser. No. 15/957,566, filed Apr. 19, 2018, entitled“Method and Apparatus for Providing a Low Latency Transmission SystemUsing Adaptive Buffering Estimation,” invented by Izquierdo andRodriguez, with an Attorney's docket No. MP12736DIV (1128.P0007D1).

FIELD

The exemplary embodiment(s) of the present invention relates totelecommunications network. More specifically, the exemplaryembodiment(s) of the present invention relates to quality of service(“QoS”) in connection to multimedia data transmission.

BACKGROUND

A typical high-speed communication network, which is able to delivermassive amount of information and/or data between sources anddestinations, may contain multiple networks. The information may travelacross one or more networks to reach its destination.

For example, the networks may include, but not limited to, wirednetwork, backbone network, wireless network, cellular network, wirelesspersonal area network (“WPAN”), wireless local area network (“WLAN”),wireless metropolitan area network (“MAN”), or a combination of wired,backbone, wireless, cellular, WPAN, WLAN, MAN, WIFI, or the like.

With rapidly growing trend of mobile and remote data access over thehigh-speed communication network such as 3G or 4G cellular services,accurately delivering and deciphering data streams become increasinglychallenging and difficult. With popularity of wireless multimediainformation delivery to portable devices, the demand for faster andquality audio/video (“A/V”) data streaming is high. However, a problemassociated with A/V transmission via a conventional system is A/Vquality degradation, such as A/V distortion, video judder, and/or audiojitter, partially due to network jitter.

SUMMARY

The following summary illustrates a simplified version(s) of one or moreaspects of present invention. The purpose of this summary is to presentsome concepts in a simplified description as more detailed descriptionthat will be presented later.

One aspect of the present invention discloses a network system able toimprove QoS in transmitting A/V data using smart QoS (“SQoS”). Thenetwork system, for example, includes a transmitter, transmissionchannel, adjustable decoder buffer, and decoder and employs SQoS toachieve optimal quality during A/V data transmission process. Thetransmitter contains an encoder and is able to encode A/V data packetsin accordance with a process of SQoS which, in one aspect, includesadaptive latency estimation for facilitating optimal A/V quality. Forencoding configuration carried out by an encoder, not only the adaptivelatency estimation will be used, but also other parameters such aspackets loss and A/V bit rate are used to help achieving optimal A/Vquality. While the transmission channel transmits A/V data between thetransmitter and the sink, the adjustable decoder buffer is adjustable inresponse to the adaptive latency estimate. The decoder fetches the A/Vdata packets from the adjustable decoder buffer for decoding. In oneaspect, the decoder is capable of generating or updating the adaptivelatency estimate based on the quality of decoded A/V data and networkjitter estimation.

Additional features and benefits of the exemplary embodiment(s) of thepresent invention will become apparent from the detailed description,figures and claims set forth below.

BRIEF DESCRIPTION OF THE DRAWINGS

The exemplary aspect(s) of the present invention will be understood morefully from the detailed description given below and from theaccompanying drawings of various embodiments of the invention, which,however, should not be taken to limit the invention to the specificembodiments, but are for explanation and understanding only.

FIG. 1 is a block diagram illustrating a computing network configured totransmit data streams using smart quality of service (“SQoS”) inaccordance with one embodiment of the present invention;

FIG. 2 is a block diagram illustrating a network mechanism of A/V datatransmission using SQoS to enhance A/V quality in accordance with oneembodiment of the present invention;

FIG. 3A is a block diagram illustrating logic flows of SQoS using areceiver to generate adaptive latency estimate(s) in accordance with oneembodiment of the present invention;

FIG. 3B is a block diagram illustrating logic flows of SQoS usingvariable buffers to generate adaptive latency estimate(s) in accordancewith one embodiment of the present invention;

FIG. 4 is an alternative illustration logic flows at receiving side orRX end using SQoS to optimize image and sound quality in accordance withone embodiment of the present invention;

FIG. 5 is a block diagram illustrating an exemplary system capable ofproviding SQoS operation in accordance with one embodiment of thepresent invention;

FIG. 6 is a flowchart illustrating a process of SQoS by adjusting buffercapacity in accordance with one embodiment of the present invention; and

FIG. 7 is a block diagram illustrating an exemplary process of adjustingbuffer capacity using buffer status statistics in accordance with oneembodiment of the present invention; and

FIG. 8 is a flowchart illustrating a process of identifying bufferstatus statistics in accordance with one embodiment of the presentinvention.

DETAILED DESCRIPTION

Aspects of the present invention are described herein in the context ofmethods and/or apparatus for transmitting packet streams or packet flowsusing smart quality of service (“SQoS”) to achieve optimal audio/video(“A/V”) quality.

The purpose of the following detailed description is to provide anunderstanding of one or more embodiments of the present invention. Thoseof ordinary skills in the art will realize that the following detaileddescription is illustrative only and is not intended to be in any waylimiting. Other embodiments will readily suggest themselves to suchskilled persons having the benefit of this disclosure and/ordescription.

In the interest of clarity, not all of the routine features of theimplementations described herein are shown and described. It will, ofcourse, be understood that in the development of any such actualimplementation, numerous implementation-specific decisions may be madein order to achieve the developer's specific goals, such as compliancewith application- and business-related constraints, and that thesespecific goals will vary from one implementation to another and from onedeveloper to another. Moreover, it will be understood that such adevelopment effort might be complex and time-consuming, but wouldnevertheless be a routine undertaking of engineering for those ofordinary skills in the art having the benefit of embodiment(s) of thisdisclosure.

Various embodiments of the present invention illustrated in the drawingsmay not be drawn to scale. Rather, the dimensions of the variousfeatures may be expanded or reduced for clarity. In addition, some ofthe drawings may be simplified for clarity. Thus, the drawings may notdepict all of the components of a given apparatus (e.g., device) ormethod. The same reference indicators will be used throughout thedrawings and the following detailed description to refer to the same orlike parts.

The term “system” or “device” is used generically herein to describe anynumber of components, elements, sub-systems, devices, packet switchelements, packet switches, access switches, routers, networks, modems,base stations, eNB (eNodeB), computer and/or communication devices ormechanisms, or combinations of components thereof. The term “computer”includes a processor, memory, and buses capable of executing instructionwherein the computer refers to one or a cluster of computers, personalcomputers, workstations, mainframes, or combinations of computersthereof.

IP communication network, IP network, or communication network means anytype of network having an access network that is able to transmit datain a form of packets or cells, such as ATM (Asynchronous Transfer Mode)type, on a transport medium, for example, the TCP/IP or UDP/IP type. ATMcells are the result of decomposition (or segmentation) of packets ofdata, IP type, and those packets (here IP packets) comprise an IPheader, a header specific to the transport medium (for example UDP orTCP) and payload data. The IP network may also include a satellitenetwork, a DVB-RCS (Digital Video Broadcasting-Return Channel System)network, providing Internet access via satellite, or an SDMB (SatelliteDigital Multimedia Broadcast) network, a terrestrial network, a cable(xDSL) network or a mobile or cellular network (GPRS/EDGE, or UMTS(where applicable of the MBMS (Multimedia Broadcast/Multicast Services)type, or the evolution of the UMTS known as LTE (Long Term Evolution),or DVB-H (Digital Video Broadcasting-Handhelds)), or a hybrid (satelliteand terrestrial) network.

One aspect of the present invention discloses a network system employingSQoS able to enhance QoS associated with A/V data packets transmission.The network system includes a transmitter, transmission channel,adjustable decoder buffer, and decoder. The transmitter contains anencoder and is able to encode A/V data or A/V data packets in accordancewith an adaptive latency estimate. The transmission channel, in oneexample, transmits or transports A/V data packets from one end such astransmitter to another end such as receiver. Note that transmitter canalso be referred to as source or originator while receiver can also bereferred to as destination and sink.

SQoS, in one embodiment, uses variable buffers also known as adjustabledecoder buffer, and adaptive latency estimation to improve A/V imagequality. For instance, after providing a preliminary estimation duringan initial phase, SQoS provides fine tuning to achieve optimal latencyestimation using variable buffers. The adaptive latency estimation, inone example, is continuously updated based on the A/V artifacts fromdecoded A/V frames. In one aspect, the buffer status statistics analysisis used to identify A/V artifacts in connection to the A/V frames andthe latency estimation. With the analysis of A/V playback performanceassociated with decoded A/V frames, SQoS updates the buffer statusstatistics analysis which is subsequently used to refine the size of thebuffer.

The adjustable decoder buffer, in one aspect, is capable of dynamicallyadjusting or altering its storage capacity or buffering size in responseto the adaptive latency estimate. In one example, upon fetching at leasta portion of the A/V data packets from the adjustable decoder buffer,the decoder generates A/V frames or A/V presentation according todecoded A/V data. After generating the A/V frames, the adaptive latencyestimate(s) is updated based on the analysis of decoder bufferoccupation over the time and the quality of the decoded A/V data packetsor quality of A/V frames. It should be noted that to achieve optimal A/Vquality, SQoS estimates or identifies network jitter and subsequentlyestimates capacity of buffer based on statistic values.

FIG. 1 is a block diagram 100 illustrating a computing networkconfigured to transmit data streams using smart quality of service(“SQoS”) in accordance with one embodiment of the present invention.Diagram 100 includes packet data network gateway (“P-GW”) 120, twoserving gateways (“S-GWs”) 121-122, two base stations (or cell sites)102-104, user equipment (“UE”) 106-108, server 124, and Internet 150.P-GW 120 includes various components 140 such as billing module 142,subscribing module 144, and/or tracking module 146 to facilitate routingactivities between sources and destinations. In one aspect, SQoS 128 isimplemented in the network to provide an improved A/V quality usingencoding parameters, channel characteristics, and/or decodingcharacteristics. It should be noted that the underlying concept of theexemplary embodiment(s) of the present invention would not change if oneor more blocks (or devices) were added to or removed from diagram 100.

The network configuration illustrated in diagram 100 may also bereferred to as a third generation (“3G”), 4G, LTE, or combination of 3Gand 4G cellular network configuration. MME 126, for example, is coupledto base stations (or cell site) and S-GWs capable of facilitating datatransfer between 3G and LTE (long term evolution) or between 2G and LTE.MME 126 performs various controlling/managing functions, networksecurities, and resource allocations.

S-GW 121 or 122, in one example, coupled to P-GW 120, MME 126, and basestations 102-104, is capable of routing data packets from base station102, or eNodeB, to P-GW 120 and/or MME 126. A function of S-GW 121 or122 is to perform an anchoring function for mobility between 3G and 4Gequipments. S-GW 122 is also able to perform various network managementfunctions, such as terminating paths, paging idle UEs, storing data,routing information, generating replica, and the like.

P-GW 120, coupled to S-GWs 121-122 and Internet 150, is able to providenetwork communication between UE 106-108 and IP based networks such asInternet 150. P-GW 120 is used for connectivity, packet filtering,inspection, data usage, billing, or PCRF (policy and charging rulesfunction) enforcement, et cetera. P-GW 120 also provides an anchoringfunction for mobility between 3G and 4G (or LTE) packet core network(s).

Base station 102 or 104, also known as cell site, node B, or eNodeB,includes one or more radio towers 110 or 112. Radio tower 110 or 112 isfurther coupled to various UEs, such as a cellular phone 106, a handhelddevice 108, tablets and/or iPad® 107 via wireless communications orchannels 137-139. Devices 106-108 can be portable devices or mobiledevices, such as iPhone®, BlackBerry®, Android®, and so on. Base station102 facilitates network communication between mobile devices such as UEs106-107 with S-GW 121 via radio towers 110. It should be noted that basestation or cell site can include additional radio towers as well asother land based switching circuitry.

Server 124 is coupled to P-GW 120 and base stations 102-104 via S-GW 121or 122. In one aspect, server 124 includes SQoS or SQoS module 128 usedto optimize A/V quality via latency and/or bandwidth adjustments. Forexample, the SQoS mechanism can deal with the task of trying to achieveoptimal A/V quality performance through adjusting long and short termvariations associated with the transmitter, transmission channels, andsink (or receiver).

SQoS 128, in one aspect, can be implemented by software, firmware,hardware, and/or a combination of software, firmware, and hardware. SQoS128 can reside in server 124, S-GW 121, base station 102, and/or EUssuch as tablets 107. To improve quality of A/V data, SQoS 128, in oneaspect, exams characteristics of source, characteristics of transmissionchannel, and characteristics of sink. The characteristics of source, inone example, include A/V coding efficiency, data packetization, and/ortransmission performance. The data packetization, for example, involvesorganizing audio and video packets in an interleaving configuration. Thetransmission channel characteristics, in one example, involve long andshort term sessions based on current traffic conditions. The sinkcharacteristics involve A/V decoding optimization including buffering.

An advantage of employing SQoS is to enhance overall quality (i.e.,resolution, lip synchronization, clarity, and the like) of A/Vpresentation or playback.

FIG. 2 is a block diagram 200 illustrating a network mechanism of A/Vdata transmission using SQoS to achieve optimal A/V quality inaccordance with one embodiment of the present invention. Diagram 200shows a network system capable of transmitting A/V data such as A/Vpackets or A/V flows between a source and a sink. The network systemincludes a transmitter (“TX”) 206, a transmission channel 208, anadjustable decoder buffer 212, and a receiver (“RX”) 210. TX 206 havingan encoder encodes A/V input frames or packets 202 and RX 210 having adecoder decodes received A/V data and generates decoded A/V frames 204.It should be noted that the underlying concept of the exemplaryembodiment(s) of the present invention would not change if one or moreblocks (or devices) were added to or removed from diagram 200.

TX 206, in one aspect, includes an encoder which is configured to encodeA/V data for transmission in accordance with SQoS operation. SQoSoperation, in one aspect, includes adaptive latency estimation forfacilitating optimal A/V quality. For encoding configuration carried outby an encoder, not only the adaptive latency estimation will be used,but also other parameters such as packets loss and A/V bit rate are usedto help achieving optimal A/V quality. The adaptive latency estimate(s),which is received by TX 206, is generated or updated based on earlieranalysis of buffer status as well as decoded A/V playback frames 216 asindicated by arrow 224. Transmission channel 208, which can be awireless session between radio towers, is configured to transmit A/Vdata packets from TX 206 to RX 210. In one example, transmission channel208 can be WIFI channel, satellite network, blue tooth network, and/or acombination of WIFI, satellite, blue tooth, and/or land based networkchannels.

Adjustable decoder buffer 212 capable of adjusting its storage capacitybased on the adaptive latency estimate is operable to temporary bufferor store received A/V data or packets via transmission channel 208. Abenefit of buffering input packet flow(s) is to avoid impact on A/Vquality due to buffer underflow condition. The underflow condition, inone example, indicates empty buffer and there is no data or packets todecode. Another benefit of buffering input packet flow(s) is, if needed,to synchronize the order of audio and video packets before decoding. Tooptimize A/V quality, the capacity of buffer 212 is an important factorbecause an optimal buffer capacity will define the probability to meetbuffer underrun/overflow conditions that in the end will cause A/Vdegradation. In one example, a properly adjusted buffer size for buffer212 can avoid A/V distortion as well as reduce packet loss. It should benoted that the capacity of buffer also affects E2E latency. A functionof SQoS is to adjust buffer size in real-time based on buffer statusanalysis and feedback of the earlier decoded A/V presentation whereby arepetitive adjustment of buffer size over a period of time can achievean optimal buffer size under certain circumstances such as currenttraffic condition and information (or data) characteristics in a minimumE2E latency scenario. Note that SQoS tries to identify an optimalinstant to update buffer size when the updating is needed. The optimalinstant to update buffer size will, for example, reduce and/or avoidimpact on A/V quality. For example, reducing or avoiding audio packetsdrop can avoiding audio silence.

To decode A/V packet(s), decoder, which can be part of RX 210, retrievesat least a portion of A/V data packets from adjustable buffer or decoderbuffer 212 for decoding. Based on adjustable buffer status long andshort term statistics and the A/V playback quality during or afterdecoding, SQoS, in one aspect, updates the adaptive latency estimate(s).For example, after analyzing buffer status statistics and upon detectingartifacts such as video judder and/or audio jitter, SQoS is capable ofgenerating revised adaptive latency estimate based on the detected videojudder and audio jitter. Alternatively, encoder within RX or sink 210 isable to change encoding configuration, such as transmission bandwidth,bit rate, video intra refresh, and the like at TX 206 based on updatedadaptive latency estimate.

SQoS, in one aspect, is able to optimize overall A/V playback qualitybased on adjusting end-to-end (“E2E”) latency. The E2E latency may bedefined as the time between A/V capture (T_(C)) and A/V presentation(T_(P)) as illustrated in FIG. 2. The E2E latency (Tp-Tc) includes timefor encoding Te, time for transmission T_(ch), time for buffer T_(B),and time for decoding Td. In a low latency scenario, the E2E latency iswithin hundreds milliseconds (“ms”) but SQoS tools can also work onhigher latency scenarios. Depending on the applications, 500 ms or lessof E2E latency is considered as low latency. Note that when the sourceand the network are relatively stable, adjusting buffering size whichaffects E2E latency can reduce A/V artifacts and improve A/V quality.

For example, to reduce artifacts during A/V data transmission, the SQoSor SQoS algorithm continuously adjusts decoding latency and/or encodingparameter during real-time transmission until A/V quality is reached. Tokeep artifacts low, the E2E latency, in one example, is dynamicallyadjusted in real-time during the transmission. It should be noted thatthe buffering size or storage capacity of buffer 212 is tightly relatedto adaptive latency estimate. Note that the terms “latency estimation,”“buffering size,” and “buffer storage capability” are logicallyequivalent and they can be used interchangeably. The adaptive latencyestimate, in one example, is generated by an adaptive latency estimationor process. The adaptive latency estimation (“ALE”) is a repetitiveprocess during the transmission and generates a set of estimate(s) usingA/V quality from earlier decoded A/V data. The A/V quality includes, butnot limited to, video judder, audio jitter, audio video lipsynchronization, packets drop, and the like.

To control E2E latency, a buffer 212 is employed before decoding so thatany unexpected fluctuations that could cause artifacts can be absorbedor reduced by the buffering process. In one aspect, the decoder startsthe decoding process once the storage level in buffer 212 reaches apredefined level. Note that different buffering level contributesdifferent E2E latencies for the streaming process. Upon notifying fromthe decoder, the encoder may adjust encoder's behavior based on theadaptive latency estimate. Otherwise, SQoS will adjust bufferingcapacity to achieve optimal A/V playback quality. The encoder'sbehavior, for example, includes setting higher priority or alteringtransmission bandwidth for A/V packet transmission. Otherwise SQoS willadjust buffering capacity to achieve optimal A/V playback quality.

To achieve higher A/V quality at the presentation time (T_(P)), SQoS, inone aspect, monitors and manages source device(s) as well as sinkdevice(s) to deliver high A/V quality based on adaptive latencyestimate. During initial phase, A/V encoding characteristics orparameters are set to default values. The exemplary A/V encodingcharacteristics or parameters could be bit rate, bandwidth, video INTRArefresh, video GOP configuration and/or data type. During transmission,the source such as TX 206 can be adjusted in real-time based on theadaptive latency estimate. Since the adaptive latency estimate iscontinuously updated based on the decoded A/V frames, the E2E latency isalso constantly updated whereby the overall A/V quality is improved. Inone aspect, a method of adjusting the E2E latency is to adjust the sizeof buffer 212.

When a set of A/V streams travel from source device(s) to sinkdevice(s), certain degrees of A/V distortion and/or A/V artifacts can becaused by environment noise, encoding error, and/or traffic congestions.The A/V distortion or A/V artifacts include decoding errors, A/V displaysync and/or smoothness miss-performance issues. For example, theresulted A/V distortion during the display time could occur due to asuboptimal transmission process.

A decoding error may be issued when an occurrence of packet loss isdetected during transmission. It should be noted that packet(s) loss canhappen at TX 206, transmission channel 208, and/or RX 210. In oneexample, an error may be issued when a mismatch of TX/RX performanceoccurs. Note that TX/RX mismatch, for example, indicates A/V displaysync, A/V artifacts, and/or smoothness miss-performance. The mismatchmay occur due to A/V artifacts, video judder/tearing, audiojitter/crapping, and/or A/V lip sync. SQoS, in one aspect, is capable ofmonitoring and identifying A/V packet flows based on a set of predefinedA/V transmission parameters. Based on the result detected, SQoS is ableto adjust system configuration to achieve an optimal transmissionprocess. An optimal transmission process should provide high A/V qualitywith minimal distortion. It should be noted that SQoS components can beimplemented at any stages along the A/V transmission blocks. Forinstance, SQoS can be implemented at TX 206, RX 210, and/or channel 208.

An advantage of using SQoS is that it improves A/V quality usingoptimized transmission process. SQoS, in one aspect, manages and adjustsvarious system characteristics to refine transmission process. Thesystem characteristics include, but not limited to, A/V interleavingformation, network jitter analysis, and/or transmission bandwidth. WhileA/V encoding parameters deals with bit rate and frame/sample rate, thetransmission channel characteristics are directed to sessions and/orWIFI channels. The A/V decoding characteristics are associated with A/Vdata buffering.

FIG. 3A is a block diagram 300 illustrating logic flows of SQoS using adecoder to generate adaptive latency estimate(s) in accordance with oneembodiment of the present invention. Diagram 300 illustrates a receiving(or sinking) device including a buffer or adaptive buffer 302, selector306, decoder 210, buffer status statistics analysis 211, ALE module 316,and base station 112. SQoS, in one example, can be operated in buffer302, selector 306, ALE module 316, or a combination of buffer 302,selector 306, and ALE module 316. Buffer status statistics analysis 211provides analysis buffer capacity usage and records buffer status basedon the adaptive latency estimate. It should be noted that the underlyingconcept of the exemplary embodiment(s) of the present invention wouldnot change if one or more blocks (or devices) were added to or removedfrom diagram 300.

TX transmits A/V packet flow 304 to RX through a wireless communicationschannel 324 via base station 112. A/V packet flow 304 includes numerousaudio packets 350-352 and video packets 356-358 wherein the audiopackets and video packets are organized in an interleaving format. Theinterleaving format, in one aspect, indicates audio packets and videopackets are organized or placed in an alternate position. For example,video packet 356 is situated between two audio packets 350-352.Similarly, audio packet 352 is situated between two video packets356-368.

RX, in one aspect, includes antenna 322, buffer 302, decoder 210, andALE module 316. Antenna 322 is able to receive wireless transmissionsuch as A/V packet flow 304 from air. Upon arrival of wireless data suchas A/V packet flow 304 at antenna 322, A/V packet flow 304 is, in oneexample, temporary stored or buffered in buffer 302. It should be notedthat other receiving mechanism, such as additional antennas, channels,land-based cable connections or a combination of antenna(s), cable(s),and wire(s) may be used to offload information from tower 112.

Buffer 302, also known as latency buffer or adaptive buffer, is atemporary storage or buffer with adjustable storage capacity. To providea buffer with adjustable storage capacity, buffer 302, in one aspect,employs multiple memory buffers 332-336 with different memorycapacities. With the capability of adjustable buffer size, SQoS, in oneexample, is able to resize or adjust storage capacity of buffer 302based on buffer status statistics analysis and decoded image/audioquality (“IAQ”) A/V frames 204. IAQ, for instance, indicates imageresolution, audio clarity, audio video synchronization, imaging phasetransition, and the like. In one aspect, adaptive latency estimate isgenerated in response to IAQ.

Buffer 302, in one example, is a first-in first-out (“FIFO”) memorycomponent. Depending on the network traffic, data type, and networkbandwidth, an optimal buffering capacity associated to buffer 302 can beobtained. In one aspect, SQoS is able to adjust buffering capacity ofbuffer 302 repeatedly and/or dynamically in a real-time based on theadaptive latency estimate. Different buffer size determines differentlatency time. During the packet transmission, SQoS continuously collectsbuffer status statistics, so after analyzing those statistics, adjustthe buffer capacity in accordance with a preliminary adaptive latencyestimate until an optimal or almost optimal buffering capacity isobtained. It should be noted that the optimal buffering capacity forbuffer 302 may be reached after a period of adjustments.

For decoding, decoder 210 fetches A/V data or packets from buffer 302via selector 306. After deciphering the A/V data, a set of A/V frames204 are generated based on the fetched A/V data. At least a copy of A/Vframes 204 is forward to ALE module 316 for producing new or updatedadaptive latency estimate based on preliminary adaptive latencyestimate. ALE module 316, in one example, includes an encodingestimation 308, sync correction 310, and preliminary latency estimation312.

During an operation, a method of decoding A/V data or SQoS fetches afirst stream of A/V packet from buffer 302 with an initial buffer sizesuch as B2 334. After analyzing initial short term buffer statusstatistics and the first stream of A/V packets decoded, such as frames204 and identifying IAQ associated with the first stream of A/V packets,an adaptive A/V buffering estimate is generated. To generate IAQ, videojudders, audio jitters, and A/V sync relating to first stream of A/Vpackets are identified or detected. Based on IAQ analysis, the buffercapacity of the buffer 302 capacity, initially estimated by bufferstatus statistics analysis, is updated. For example, moving from B2 334to B1 332 of buffer 302 in accordance with the adaptive A/V bufferingestimate is activated thereby subsequent data streams are stored in B1of buffer 302. To improve overall efficiency of A/V data transmission,SQoS can also notify TX for changing encoding bit-rate according to theadaptive A/V buffering estimate.

SQoS uses buffer status statistics analysis as well as A/V quality orIAQ associated with a set of decoded A/V frames over a period of time togenerate and update adaptive latency estimate. Note that A/V quality orIAQ analysis is part of ALE process. To improve overall efficiency ofA/V packet flow transmission, SQoS monitors decoding errors from decoderinformation report, A/V display sync miss-performance, and A/V displaysmoothness miss-performance.

ALE module 316, in one aspect, includes an error detection 308, synccorrection 310, and buffering estimation 312 and is able to provide atleast a portion of adaptive latency estimation process. Error detection308, in one example, includes a function of detecting and processing A/Vdecoding errors (or encoding errors). Sync correction 310, on the otherhand, provides A/V display sync miss-performance. Buffering estimation312, in one example, is used to optimize A/V display smoothnessperformance.

Error detection 308, in one example, uses decoded A/V frames 204 tomonitor and detect A/V decoding errors. The decoding errors could beintroduced at A/V elementary stream (ES) during encoding time. Forinstance, A/V decoding errors can occur due to packet loss during thetransmission. The packet loss may be punctual packet loss or continuouspackets loss. The punctual packet loss is a phenomenon of discretepacket missing. If the packet loss is continuous, it could indicateimproper encoding bit rate. The improper encoding bit rate generallyoccurs at TX that selects an improper bandwidth during encoding. Whilethe punctual packet loss can be difficult to predict, the continuouspacket loss can be reduced by various adjustments such as changingencoding bit rate or adjusting buffer size.

A/V display sync miss-performance between audio and video is a processto correct punctual and/or A/V sync miss-performance at the receivingend such as RX. For example, if A/V sync miss-performance is offcontinuously at the receiving end, SQoS may adjust buffer capacity tolower the latency to correct the A/V sync miss-performance. Optimal A/Vdisplay smoothness performance indicates smooth A/V playback with novideo judder, jumps, skips, no audio skipped, or crapped.

SQoS analyzes A/V smoothness performance to achieve optimal performancebased on A/V playback or A/V frames 204. A/V playback, in one example,requires buffering the incoming A/V data flow prior to start decodingencoded content. The optimal smoothness can be achieved if the buffer ordecoder buffer is neither underflow nor overflow. It is noted thatbuffering introduces latency. If the latency is not critical, asufficiently large enough buffering can improve the performance toachieve better A/V playback.

In operation, if the original A/V content is smooth, buffering at thereceiving end can be the major factor to achieve a better display smoothperformance. The benefit of buffering at the RX side is that videoand/or audio packets can wait until all packets are arrived beforedecoding. Buffering time which is determined based on the size of bufferapproximately equals to the time required by A/V transmission blocks (TXand channel) to perform and process (encoding) as well as transmitting.

Audio video packets 350-358 are organized in an interleavingconfiguration. For example, each video packet is located between audiopackets and each audio packet may be located between video packets. Fora real-time A/V transmission system (i.e., A/V streaming), buffering isnot only present in A/V content interleaving between audio and videopackets, but also involving in A/V transmission, such as encoding,packetizing, and transmitting processes.

It should be noted that buffering can occur at various different stagesand/or phases (i.e., places). For example, prior to encoding, A/Vencoding buffering may be used to store A/V content to enhanceperformance. Also, A/V packetizing buffering could also be implementedbefore packetizing process. The Packetizing process involves ininterleaving A/V packets. A process of A/V transmission buffering canalso be performed before packet transmitting for smooth transmission.

FIG. 3B is a block diagram 360 illustrating logic flows of SQoS or RXusing an alternative buffer configuration to generate adaptive latencyestimate(s) in accordance with one embodiment of the present invention.Diagram 360, which is similar to diagram 300 except the design ofbuffers 364-366 and decoder 372, illustrates a receiving (or sinking)device or RX, wireless communications channel 324, and base station 112.SQoS, in one example, can be operated in RX, TX, base station 112,and/or a combination of RX, TX, and network transmission devices. Itshould be noted that the underlying concept of the exemplaryembodiment(s) of the present invention would not change if one or moreblocks (or devices) were added to or removed from diagram 360.

RX, which hosts at least a portion of SQoS, includes a demultiplex(“demux”) 362, audio FIFO buffer 264, video FIFO buffer 266, audiodecoder 374, video decoder 376, decoder 372, and buffer statusstatistics analysis 211. In an alternative aspect, decoders 372-376 areconfigured into a single decoder with audio portion and video portion.Buffer status statistics analysis 211, which can be a module, is used toprovide buffer usage statistics relating to buffer fullness at oneinstant of time. The usage and/or fullness of buffer can vary overtimebased on various conditions such as network jitter. The condition orperformance of the network can cause A/V artifacts during playback ifthe latency is not adequately adjusted to compensate the variation ofthe network performance.

Upon arrival of A/V packet stream 304, demux 362, in one aspect, is ableto separate audio packets from video packets carried by A/V packetstream 304. A/V packet stream 304, in one example, is sent from atransmitter, not shown in FIG. 3B, via a communications network. Afterseparating the video packets from audio packets, they are forwarded toone or more variable buffers for temporary storage.

Audio FIFO buffer 364 and video FIFO buffer 366 are two first-infirst-out storage devices. In one example, buffers 364-366 areconfigured to have variable storage capacities. To control the storagecapacity, buffer threshold or buffer threshold points 368-370 are usedto determine the storage capacity or storage size of buffers 364-366.Buffer threshold pointers 368-370 can be one single pointer or multiplepointers based on the applications. For example, multiple thresholdpointers can be used to facilitate different storage capacities betweenaudio buffer 364 and video buffer 366. In one aspect, variable audiobuffer 364 is used to buffer audio packets and variable video buffer 366is used to buffer the video packets. The stored A/V packet stream can beretrieved or fetched by decoder 372.

In one aspect, decoder 372 contains an audio decoder 374 and a videodecoder 376 wherein audio buffer 374 retrieves audio packet from audiobuffer 364 and subsequently decodes the audio packets to produce audiosound. Video decoder 376 is able to retrieve the video packets frombuffer 366 and decodes the video packets to produce video images. Thedecoded video packets and audio packets are merged at decoder 372 tofacilitate producing A/V frames. It should be noted that decoder 372 canbe configured to include audio decoder 374 and video decoder 376.

SQoS, in one aspect, is capable of updating buffer capacity in atransparent way to generate A/V smoothness. To adjust buffer capacity, athreshold such as buffer threshold 368 or 370 is used to determine theactual buffer capacity. In one example, the buffer capacity can varybased on the adaptive latency estimate. When buffer capacity isrecommended to be increased, threshold, for example, is increasedaccordingly to keep new latency scenario. Similarly, if the buffercapacity is recommended to be decreased, threshold will be decreased. Itshould be noted that changing buffer capacity to audio buffer 364 with anew pointing value of threshold 368 could potentially introduce newaudio artifacts because different size of audio buffer introducesdifferent latency. SQoS, in one aspect, is configured to monitor bufferstatus and audio content to minimize audio artifacts appearance.

FIG. 4 is a diagram 400 illustrating logic flows at receiving side or RXend using SQoS to optimize image and sound quality in accordance withone embodiment of the present invention. Diagram 400, which is similarto diagram 300, shows a receiving side or sinking side apparatus havinga buffer or adaptive buffer 402, selector 406, decoder 210, estimationmodule 416, and base station 112. In one aspect, SQoS can be implementedat buffer 402, selector 406, and/or estimation module 416. It should benoted that the underlying concept of the exemplary embodiment(s) of thepresent invention would not change if one or more blocks (or devices)were added to or removed from diagram 400.

Packet flow 304 contains audio and video packets 350-358 that areorganized in an interleave format. Packet flow 304 is transmitted fromTX to RX via base station 112. The RX side, in one embodiment, includesantenna 322, buffer 402, decoder 210, and estimation module 416. Uponarriving at RX side, the data flow such as flow 304 is temporary storedat buffer 402 waiting to be decoded or processed.

Buffer 402, also known as latency buffer or adaptive buffer, containsmultiple memory storages 432-436. Each storage space such as storage 432is configured to have similar buffering capacity as other storage spacesuch as storages 434-436. In one aspect, storages 432-436 areinterconnected in a concatenated formation wherein each storage has aninput and output (“I/O”) ports. The output ports of storage 434-436 arecoupled to selector 406. Also, each output port is connected to theinput port of a neighboring storage. For instance, the output port ofstorage 432 is coupled to the input port of storage 434 to form aconcatenated or “daisy chain” like configuration. Based on theconcatenated connection, the output of storage 434 includes buffer sizeof storage 432 plus storage 434. Based on the value of adaptive latencyestimate, SQoS can select an optimal storage capacity or buffer size toachieve best A/V quality via selector 406.

Decoder 210, in one example, is capable of retrieving stored A/Vpacket(s) from storage 432, storage 434, or storage 436 based on selectsignal 420. Select signal 420 is generated by estimation module 416using preliminary latency estimation from buffer status statisticsanalysis and A/V frames 204 as IAQ values. It should be noted that ifthe output of storage 436 is selected, it indicates that the maximumbuffering capacity (i.e. storages 432-436) is selected.

In one aspect, SQoS, also known as RX SQoS, is operated at the RX side.SQoS uses RX side A/V transmission statistics to estimate optimalconfiguration for different blocks of A/V transmission system. Toachieve optimal A/V quality performance, SQoS uses encoding bit rateestimation 408, A/V sync 410, and A/V playback buffering (latency)estimation 412. While encoding bit rate estimation 408 is used to reducecontinuous packet loss via bit rate adjustment, A/V sync 410 deals withdata prioritizing to reduce miss-performance. The miss-performance is adeviation from a normal operation. A/V playback buffering (latency)estimation 412 includes an adaptive buffering mechanism.

SQoS, in one example, employs estimation module 416 to generate at leasta portion of adaptive latency estimate(s). Estimation module 416includes an error encoding estimation 408, sync correction 410, andlatency estimation 412 to implement a process of adaptive latencyestimation. Encoding estimation 408, in one example, includes detectingand processing A/V encoding related errors. Sync correction 410 dealswith RX sync correction and latency estimation 412 generates A/Vplayback buffering estimation.

SQoS is able to instruct TX to increase or decrease bit rate to improveoverall A/V quality. SQoS also detects different types of packet lossscenarios. For instance, upon detecting a burst of packet loss, SQoS mayinstruct TX to decrease bit rate during the subsequently encodingprocess. Similarly, if a scenario of no packet loss is detected, SQoSmay instruct to increase bit rate to refine transmission performance.

It should be noted that the algorithm to perform encoding estimation 408may be based on an initially defined bit rate. In operation, if packetloss occurs, TX may be instructed to lower the bit rate until a scenarioof no packets loss is reached. The reference encoding bit rate isaccordingly established. If no packets loss happens during the lastREF_BR_INITIAL_TIME, increasing encoding bit rate is carried out untilcontinuous packets loss start to happen. The (encoding) bit ratedecreases if the frequency of packet loss is logic one (1). The(decoding) bit rate increases if the frequency of packet loss is logiczero (0).

Sync correction 410 operates an A/V receiving sync correction. SQoSincludes a mechanism to detect A/V receiving sync miss-performance thatmay cause extra latency. To reduce the miss-performance, updating indifferent ways A/V latency can be updated in various approaches toachieve optimal E2E latency performance. Note that using the correctionmechanism of A/V receiving sync to achieve optimal E2E latency, in someinstances, can cause lip sync miss-performance. The correction mechanismof A/V receiving sync can be used to manage increasing in latencyincrease due to A/V recv sync miss-performance. A logic expression ofsync correction at the RX end can be illustrated as below.

After AV_RECV_CORR_INITIAL_TIME, average A/V Recv sync for lastAV_RECV_CORR_LONG_TERM_TIME is checked continuously (avg_av_recv_sync),being av_recv_sync:

-   -   av_recv_sync=last_audio_pts_receiving—last_video_pts_receiving    -   So:    -   if (current_av_recv_correction=0):        -   av_thresh=SQOS_AV_RECV_INITIAL_TH        -   va_thresh=SQOS_VA_RECV_INITIAL_TH        -   audio_ahead_video_being_recovered=0        -   video_ahead_video_being_recovered=0    -   if (current_av_recv_correction<0):        -   va_thresh=SQOS_VA_RECV_TH        -   av_thresh=max(SQOS_VA_RECV_TH,            (-current_av_recv_correction))        -   audio_ahead_video_being_recovered=1    -   if (current_av_recv_correction>0):        -   av_thresh=SQOS_AV_RECV_TH        -   va_thresh=SQOS_VA_RECV_TH        -   video_ahead_video_being_recovered=1    -   if (avg_av_recv_sync←va_thresh)        -   if (video_ahead_video_being_recovered=1) means that video            was ahead audio        -   and it was corrected, so original AV recv is starting to            recover so        -   current av_recv_correction will be closer to 0.        -   If (video_ahead_video_being_recovered=0) means that AV recv            was not        -   corrected before and it is going to be corrected.    -   if (avg_av_recv_sync>av_thresh)        -   if (audio_ahead_video_being_recovered=1) means that audio            was ahead video        -   and it was corrected, so original AV recv is starting to            recover so        -   current_av_recv_correction will be closer to 0.        -   If (audio_ahead_video_being_recovered=0) means that AV recv            was not        -   corrected before and it is going to be corrected.

The algorithm illustrates an exemplary correction if an initialdeviation exceeds initial thresholds.

Latency estimation 412, in one aspect, delivers adaptive A/V playbackbuffering (latency) estimation. It should be noted that incorrectbuffering (latency) setting at the RX side can cause A/V artifacts, suchas video judder/tearing or audio jitter/crapping. If the data buffer(“DB”) level is underflow, the artifacts can be introduced oraggravated. Underflow is a situation where the buffer becomes empty. Ifthe data buffer (“DB”) level is overflow, the artifacts can also beintroduced or aggravated. Overflow is a phenomenon in which too muchdata arrives at the same time and the buffer is unable to store thedata. In a low latency system, SQoS increases buffer size to increaselatency which will reduce packet loss or data loss.

For a low latency A/V transmission system, required buffering or latencycan vary depending on TX. The required buffering or latency may alsovary depending on channel's characteristics and traffic condition. Thefollowing illustration is to show a process of buffering adjustmentbased on adaptive latency estimate. Note that buffering is inmillisecond (“ms”), and the relationship between buffering and latencycan be expressed in the following logic expression.

latency_in_msecs=buffering_in_bytes/bytes_to_msecs_conversion

Where:

a. Encoded data⇒bytes_to_msecs_conversion=enc_bit_rate_kbps/8

b. Raw data⇒will depend on raw data units, for example if in framesunits.bytes_to_msecs_conversion=bytes_per_frame*msecs_per_frame/number_of_frames

In any case SQoS will take into account any buffering indecoding/presentation processes (enc/raw data). In the event that“enc_bit_rate_kbps” is not known, buffering can be controlled by usingA/V Presentation Time Stamps (PTSs). PTSs are used for AV syncoperation. It should be noted that earlier and/or later PTS can bemanaged or controlled in buffer instead of knowing exact number of bytesneeded for buffer. In one example, a real buffer size should be largeenough to stored data in a worst case scenario for an expected latency.Setting an initial latency (ref_latency), so initial buffering isperformed according to the initial latency value. If ref_latency isoptimal for current scenario, neither buffer overflow nor underflowconditions should occur.1) SQOS INITIAL_CHECK_INTERVAL is waited to avoid any transitory TXcharacteristics that could result in incorrect latency estimation. Thisinitial interval will be performed after any “context change” just toavoid incorrect estimation due to transitory behaviors, so:

curr_latency=initial_latency

2) DB maximum (max_buff_in_msecs) and minimum (min_buff_in_msecs) levelsare checked continuously and processed everySQOS_LAT_EST_SHORT_TERM_TIME. So a short term latency estimation(latency_est_st) is performed as:

latency_est_st=max_buff_in_msecs−min_buff_in_msecs

3) Based on short term time statistics in 2), the following long termstatistics are collected for SQOS_LAT_EST_LONG_TERM_TIME:

-   -   a. latency_est_1t: that will be the long term average latency        estimation. Based on short term latency estimations        (latency_est_st) on last SQOS_LAT_EST_LONG_TERM_TIME.    -   b. min_buff_in_msecs_1t: that will be the long term average DB        minimum level. Based on short term DB minimum level        (min_buff_in_msecs) on last SQOS_LAT_EST_LONG_TERM_TIME.    -   c. Note that any short term value that comes for a period where        packets lost happened WILL BE DISCARDED.        4) Every SQOS_LAT_EST_SHORT_TERM_TIME SQoS will make decisions        about RX latency (buffering) setting.    -   a. Final latency estimation (final_latency_est_1t) set as:

final_latency_est_1t=AVG(latency_est_1t, latency_est_st)

-   -   b. No packets lost must have happened in    -   SQOS_LAT_EST_SHORT_TERM_TIME so:        -   i. If            (final_latency_est_1t>(curr_latency+inc_latency_margin))            latency will be INCREASED as final_latency_est_1t.        -   ii. If            (final_latency_est_1t<(curr_latency−dec_latency_margin)) and            (min_buff_in_msecs_1t >min_buffer_margin) latency will be            DECREASED as final_latency_est_1t. Note that setting new            latency should not make min_buff_in_msecs_1t be close to 0            so we could make buffer underflow more probable. Note:            -   1. This conditions must be met at least in two                consecutive SQOS_LAT_EST_SHORT_TERM_TIME slots of time.            -   2. If any of the conditions are not met during (1)                decreasing process will be initialized.                5) If “context change” happens                SQOS_INITIAL_CHECK_INTERVAL wait will applied to resume                SQoS operation.    -   a. Continuous packets dropped.    -   b. Latency changes (either increase or decrease).

Having briefly described aspect of SQoS able to enhance audio videoquality based on buffer status statistics analysis and earlier decodeddata (IAQ), FIG. 5 is a block diagram illustrating an exemplarytransmission system capable of operating SQoS in accordance with oneembodiment of the present invention. FIG. 5 illustrates an exemplarycomputing system 500 with feature of SQoS may be implemented. It will beapparent to those of ordinary skill in the art that other alternativenetwork or system architectures may also be employed.

Computer system 500 includes a processing unit 701, an interface bus712, and an input/output (“IO”) unit 720. Processing unit 701 includes aprocessor 702, main memory 704, system bus 711, static memory device706, bus control unit 705, and mass storage memory 707. Bus 711 is usedto transmit information between various components and processor 702 fordata processing. Processor 702 may be any of a wide variety ofgeneral-purpose processors, embedded processors, or microprocessors.

Main memory 704, which may include multiple levels of cache memories,stores frequently used data and instructions. Main memory 704 may be RAM(random access memory), MRAM (magnetic RAM), or flash memory. Staticmemory 706 may be a ROM (read-only memory), which is coupled to bus 711,for storing static information and/or instructions. Bus control unit 705is coupled to buses 711-712 and controls which component, such as mainmemory 704 or processor 702, can use the bus. Mass storage memory 707may be a magnetic disk, solid-state drive (“SSD”), optical disk, harddisk drive, floppy disk, CD-ROM, and/or flash memories for storing largeamounts of data.

I/O unit 720, in one example, includes a display 721, keyboard 722,cursor control device 723, web browser 724, and communication device725. Display device 721 may be a liquid crystal device, flat panelmonitor, cathode ray tube (“CRT”), touch-screen display, or othersuitable display device. Display 721 projects or displays graphicalimages or windows. Keyboard 722 can be a conventional alphanumeric inputdevice for communicating information between computer system 700 andcomputer operator(s). Another type of user input device is cursorcontrol device 723, such as a mouse, touch mouse, trackball, or othertype of cursor for communicating information between system 700 anduser(s).

Communication device 725 is coupled to bus 711 for accessing informationfrom remote computers or servers through wide-area network.Communication device 725 may include a modem, a router, or a networkinterface device, or other similar devices that facilitate communicationbetween computer 700 and the network. In one aspect, communicationdevice 725 is configured to perform wireless functions.

SQoS 730, in one aspect, is coupled to bus 711 and is configured toenhance audio and video quality based on decoded A/V frames. SQoS 730can be hardware, software, firmware, or a combination of hardware,software, and firmware.

The exemplary aspect of the present invention includes variousprocessing steps, which will be described below. The steps of theembodiment may be embodied in machine or computer executableinstructions. The instructions can be used to cause a general purpose orspecial purpose system, which is programmed with the instructions, toperform the steps of the exemplary aspect of the present invention.Alternatively, the steps of the exemplary embodiment of the presentinvention may be performed by specific hardware components that containhard-wired logic for performing the steps, or by any combination ofprogrammed computer components and custom hardware components.

FIG. 6 is a flowchart 600 illustrating a process of SQoS by adjustingbuffer capacity in accordance with one embodiment of the presentinvention. At block 601, the process of SQoS is able to collect thebuffer status statistics with short term as well as long term. Based onthe buffer status statistics, the preliminary adaptive latency estimateis analyzed. At block 602, the process of SQoS fetches a first datastream from a decoder buffer with a first buffer capacity. In oneexample, one or more audio video data packets are obtained from thedecoder buffer.

At block 604, after decoding the first data stream, data integrityassociated with the first data stream is identified based on a set ofpredefined parameters. For example, data integrity or A/V qualityincludes video judder associated with the data stream. Audio jitterassociated with the data stream containing audio video packets can alsobe determined. In addition, audio video lip synchronization associatedwith the data stream containing audio video packets can also beidentified. In one aspect, data integrity or A/V quality analysis ispart of ALE process to determine adaptive latency estimate.

At block 606, the adaptive latency estimate is generated in response tothe data integrity or A/V quality associated with the first data stream.For example, packets loss may be identified. Also, an audio videosynchronization miss-performance associated to the first data stream isdetected. In one aspect, the adaptive latency estimate is updated orgenerated based on decoded A/V packet flows.

At block 608, the decoder buffer is adjusted from the first buffercapacity to a second buffer capacity in accordance with the adaptivelatency estimate. For example, buffer capacity associated with thedecoder buffer is increased to a predefined level based on the adaptivelatency estimate. Note that different buffer capacity can be selected inresponse to the different values associated with adaptive latencyestimate.

At block 610, after receiving a second data stream from a communicationsnetwork, the second data stream is stored in the decoder buffer with thesecond buffer capacity. In one aspect, the process is capable of sendinga rate change message to a transmitter indicating adjustment of bit ratein response to the adaptive latency estimate. After fetching the seconddata stream from the decoder buffer, the second data stream is decoded.The second data integrity or A/V quality associated with the second datastream is subsequently identified and analyzed based on the set ofpredefined parameters. After generating a second adaptive latencyestimate in response to the second data integrity associated with thesecond data stream, the decoder buffer is adjusted from the secondbuffer capacity to a third buffer capacity in accordance with the secondadaptive latency estimate. The process receives a third data stream fromthe communications network and stores the third data stream in thedecoder buffer with the third buffer capacity.

FIG. 7 is a block diagram 700 illustrating an exemplary process ofadjusting buffer capacity using buffer status statistics in accordancewith one embodiment of the present invention. Diagram 700 illustrates aprocess of analyzing buffer status statistics and adjusting buffercapacity(s) using threshold pointer(s) based on analyzed bufferstatistics. In one aspect, diagram 700 includes a buffering deviceincluding an audio buffer 704 and a video buffer 702. Each of buffers702-704, in one example, can be assigned to maximum capacity 706,average capacity 708, or minimum capacity 710. During a preliminaryphase, the initial capacity for both buffers 702-704, in one example,can be set to average capacity 708 as pointed by threshold pointer 712.It should be noted that the underlying concept of the exemplaryembodiment(s) of the present invention would not change if one or moreblocks (or devices) were added to or removed from diagram 700.

During the phase of preliminary adaptive latency estimate, SQoS isactivated to set a predefined initial buffer size such as averagecapacity 708 for both audio buffer 704 and video buffer 706 usingthreshold pointer 712. Threshold pointer 712 can move up or down asindicated by arrows 732-736 to adjust or update buffer size based on thevalues of adaptive latency estimate. After demultiplexing the A/Vpackets, audio packets are buffered in audio buffer 704 with averagecapacity 708 and video packets are buffered in video buffer 702 withaverage capacity 708. Depending on the applications, a single A/V buffercontaining an audio buffer section and a video buffer section can beimplemented. In the present illustration, a buffer threshold pointer 712is used to set size of bot buffers 702-704 to an average capacity.

After buffering A/V packet stream or A/V packets in the A/V buffer orbuffers 702-704, the A/V packet stream is demultiplexed to separateaudio packets and video packets from the A/V packet stream. The audiopackets are stored in audio storage section 704 of the A/V buffer andthe video packets are stored in a video storage section 702 of the A/Vbuffer. In an alternative embodiment, audio packets are stored in audiobuffer 704 and video packets are stored in video buffer 702. Afterfetching packets from buffers 702-704, the packets are decoded and a setof decoded A/V frames are generated based on the decoded packets. Thedecoded A/V frames are subsequently used to identify A/V artifactsduring the playback. Note that A/V artifacts include video judder andaudio jitter associated with the decoded A/V frames. Upon updating theadaptive latency estimate in response to the A/V artifacts, the size ofA/V buffer is adjusted based on updated adaptive latency estimate. Inone example, the storage capacity of buffer 702 can change from averagecapacity 708 to maximum capacity 706. Note that changing buffer sizealters latency which could increase or decrease A/V artifacts.

The analysis of buffer status statistics can be defined as bufferstatus, buffer usage, or buffer fullness associated to a buffer at agiven instant of time. The usage or fullness of buffer 714, for example,changes or varies constantly overtime based on the network traffic,transmission carries, nature of content, and the like. The variation ofbuffer fullness or usage can result additional A/V artifacts duringplayback. For example, under the condition of buffer overflow, latencykeeping mechanism drops audio and video packets to maintain requiredminimal latency which could cause additional video and/or audio jitter.Under the condition of buffer underflow, audio and/or video playback canstall due to waiting for new data. It should be noted that by adjustinglatency which can be controlled at least partially by adjusting buffersize, optimal A/V playback can be achieved when A/V data arrives on timefor a given latency (or buffering).

During an operation, A/V frames are played back at block 716 by theprocess of analyzing buffer status statistic. At block 718, the processchecks whether the A/V frames contains jitter(s). The process proceedsto block 720 if the jitter is detected. At block 720, jitter could becaused by packet drop or buffer overflow at block 722. After bufferadjustment is sent at block 724, the process proceeds to update thethreshold pointer 712 to adjust or update the buffer capacity associatedwith buffers 702-704. The process alternatively proceeds to block 726after block 718. At block 726, the process checks to see if a stallcondition is detected. The process proceeds to block 728 if the stallcondition is detected. At block 728, a buffer underflow condition can beverified and buffer status statistics can be obtained. At block 730, acontinuing refinement of latency time is processed. The refinement, inone aspect, invoices fine turning the size of the buffer.

FIG. 8 is a flowchart 800 illustrating a process of identifying bufferstatus statistics in accordance with one embodiment of the presentinvention. At block 802, a process for collecting buffer statistics isable to set a variable storage size of an A/V buffer to a preliminarydefault buffer capacity. After identifying buffer volume usageassociated with the A/V buffer during a first period of time such aspreliminary period of time, the occurrence of empty buffer associatedwith the A/V buffer is counted at block 804 during an initial period oftime at block 806. Upon recording the occurrence of packet dropassociated with the A/V buffer at block 808, the buffer statusstatistics associated with the A/V buffer is generated in response tothe buffer volume usage, the occurrence of empty buffer, and theoccurrence of the packet drop. After calculating an average value ofbuffer volume usage at block 812, the adaptive latency estimate isupdated as indicated by numeral 820 in accordance the buffer statusstatistics at block 816. In one example, the variable capacity of thebuffer or buffers can be adjusted to the maximum, average, or minimumcapacity of A/V buffer. After waiting at block 818, a loop begins tocollect new statistics data.

To obtain buffer status, SQoS, in one aspect, collects short termstatistics and long term statistics. The short term statisticscollection includes collecting A/V buffer(s) usage or fullness inconnection a set of predefined levels, such as max, avg, and min. Theshort term statistics operates a predefined short time period such astwo (2) seconds. The short term statistics collection also counts theoccurrence of empty buffer and packets drop. For long term statisticscollection, SQoS collects and averages buffer status and packet drop ina predefined longer period of time such as 20 seconds. Long termstatistics collection, in one example, provides an average value ofbuffer status collected during the short term statistics collection.

While particular embodiments of the present invention have been shownand described, it will be obvious to those skilled in the art that,based upon the teachings herein, changes and modifications may be madewithout departing from this exemplary embodiment(s) of the presentinvention and its broader aspects. Therefore, the appended claims areintended to encompass within their scope all such changes andmodifications as are within the true spirit and scope of this exemplaryembodiment(s) of the present invention.

What is claimed is:
 1. A method for processing network packets,comprising: receiving a packet stream containing audio information andvideo information over a communications network; separating a videopacket from the packet stream by a demultiplex component; storing thevideo packet in a video buffer at a buffer location pointed by a firstpointer for temporary storage; retrieving the video packet from thevideo buffer and generating video images based on the video packet; andgenerating an audio/video (“A/V”) frame in response to the video imagesand audio sound.
 2. The method of claim 1, further comprising separatingan audio packet from the packet stream by the demultiplex component. 3.The method of claim 2, further comprising storing the audio packet in anaudio buffer at an audio buffer location pointed by a second pointer fortemporary storage.
 4. The method of claim 3, further comprisingretrieving the audio packet by an audio decoder from the audio bufferand generating audio sound based on the audio packet.
 5. The method ofclaim 4, wherein generating an audio/video (“A/V”) frame includescombing the video images with the audio sound to produce the A/V frame.6. The method of claim 1, further comprising adjusting the video bufferfrom a first buffer capacity to a second buffer capacity via the firstpointer in accordance with an adaptive latency estimate.
 7. The methodof claim 1, further comprising adjusting the audio buffer from a firstbuffer capacity to a second buffer capacity via the second pointer inaccordance with an adaptive latency estimate.
 8. The method of claim 1,further comprising sending a rate change message to a transmitterindicating bit rate adjustment for data transmission in response to theadaptive latency estimate.
 9. The method of claim 1, further comprisingidentifying video judder associated with decoding and displaying the A/Vframe.
 10. The method of claim 1, further comprising identifying audiojitter associated with decoding and audio playing processes of the A/Vframe.
 11. A device configured to process a packet stream, comprising: ademultiplex (“demux”) component able to extract audio packets and videopackets from an audio/video (“A/V”) packet stream; an audio buffer,having an adjustable buffering capacity, coupled to the demux componentand configured to store the audio packets; a video buffer, having anadjustable buffering capacity, coupled to the demux component andconfigured to store the video packets; and a decoder coupled to thevideo buffer and configured to generate A/V frames for playback based onthe audio packets fetched from the audio buffer and the video packetsfetched from the video buffer.
 12. The device of claim 11, furthercomprising a receiver coupled to the demux component and configured toreceive the A/V packet stream via a wireless communication network. 13.The device of claim 11, wherein the audio buffer includes an audiobuffer threshold pointer which is utilized to facilitate adjustingbuffer capacity in response to an adaptive latency estimate.
 14. Thedevice of claim 11, wherein the video buffer includes a video bufferthreshold pointer which is utilized to facilitate adjusting buffercapacity in response to an adaptive latency estimate.
 15. The device ofclaim 11, wherein the decoder includes an audio decoder capable ofdecoding the audio packets fetched from the audio buffer.
 16. The deviceof claim 15, wherein the decoder includes a video decoder capable ofdecoding the video packets fetched from the video buffer.
 17. The deviceof claim 11, further comprising an adaptive latency estimation (“ALE”)module coupled to the decoder and configured to generate at least aportion of adaptive latency estimate in accordance with the A/V frame.18. The device of claim 17, wherein ALE module is configured to detectvideo judder and audio jitter relating to the A/V frame, and updatingvalues of the adaptive latency estimate based on detected video judderand audio jitter.
 19. A method for processing network packets,comprising: receiving a packet stream containing audio and video dataover a wireless network; separating an audio packet from the packetstream by a demultiplex component; storing the audio packet in an audiobuffer at a buffer location pointed by a first pointer for temporarystorage; retrieving the audio packet from the audio buffer andgenerating audio sound based on the audio packet; and generating anaudio/video (“A/V”) frame in response to the audio sound after combiningvideo images with the audio sound.
 20. The method of claim 19, furthercomprising separating a video packet from the packet stream by thedemultiplex component.
 21. The method of claim 19, further comprisingstoring the video packet in a video buffer at a buffer location pointedby a second pointer for temporary storage.
 22. The method of claim 21,further comprising retrieving the video packets by an audio decoder fromthe video buffer and generating video images based on the video packet.